/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */

var searchRange = function (nums, target) {
    // 数组的长度
    let len = nums.length
    let left = 0
    let right = len - 1
    let mid = right - Math.floor((right - left) / 2)
    while (left <= right) {
        if (nums[mid] > target) {
            right = mid - 1
        } else if (nums[mid] < target) {
            left = mid + 1
        } else {
            left = mid
            right = mid
            // 如果左边存在相同的值 则向左边移动一个单位
            while (true) {
                if (nums[--left] === nums[mid]) {
                    // 如果相等 则继续
                } else {
                    left++
                    break
                }
            }
            // 如果右边存在相同的值 则向右边移动一个单位
            while (true) {
                if (nums[++right] === nums[mid]) {
                    // 如果相等 则继续
                } else { 
                    right--
                    break
                }
            }
            return [left, right]
        }
        mid = right - Math.floor((right - left) / 2)
    }
    // 如果没有找到
    return [-1, -1]
};